[playid].ts 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. /* Import modules. */
  2. import { entropyToMnemonic } from '@nexajs/hdnode'
  3. import moment from 'moment'
  4. import PouchDB from 'pouchdb'
  5. import { v4 as uuidv4 } from 'uuid'
  6. /* Initialize databases. */
  7. const playsDb = new PouchDB(`http://${process.env.COUCHDB_USER}:${process.env.COUCHDB_PASSWORD}@127.0.0.1:5984/plays`)
  8. export default defineEventHandler(async (_event) => {
  9. let response
  10. const params = _event.context.params
  11. // console.log('PARAMS', params)
  12. const playid = params?.playid
  13. // console.log('PLAY ID', playid)
  14. response = await playsDb
  15. .get(playid)
  16. .catch(err => console.error(err))
  17. // console.log('DB RESPONSE', response)
  18. if (response.error === 'not_found') {
  19. return {
  20. error: response.error,
  21. }
  22. }
  23. // NOTE: Wait until tx idem before exposing secrets.
  24. const entropy = response?.txidem?.length === 64 ? response.entropy : '[ hidden ]'
  25. // NOTE: Wait until tx idem before exposing secrets.
  26. const mnemonic = response?.txidem?.length === 64 ? entropyToMnemonic(entropy) : '[ hidden ]'
  27. /* Build (filtered) response. */
  28. const filtered = {
  29. id: response._id,
  30. gameid: response.gameid,
  31. playerid: response.playerid,
  32. address: response.address,
  33. rtp: response.rtp,
  34. entropy,
  35. mnemonic,
  36. payout: response.payout,
  37. position: response.position,
  38. seed: response.seed,
  39. keyHash: response.keyHash,
  40. unpent: response.unpent,
  41. satoshis: response.satoshis,
  42. outcome: response.outcome,
  43. txidem: response.txidem,
  44. playerJoy: response.playerJoy,
  45. houseJoy: response.houseJoy,
  46. createdAt: response.createdAt,
  47. expiresAt: response.expiresAt,
  48. updatedAt: response.updatedAt,
  49. }
  50. /* Return (filtered) results. */
  51. return filtered
  52. })